$(document).ready(function() {

	// 文件信息列表展示
	function initFileInfo(index) {
		$.ajax({
			url : "/ios/free/file-list/" + index + "/10",
			type : "get",
			async : true,
			success : function(data) {
				initHtml(data, index)
			},
			error : function(data) {
				alert('数据获取异常:' + JSON.stringify(data));
			}
		});
	}
	// 生成文件信息页面
	function initHtml(data, pageIndex) {
		// 生成文件信息
		var fileInfo = $("#fileInfo")
		fileInfo.html("")
		var rowDiv = null
		$.each(data.pageInfos, function(index, val) {
			if (index % 5 == 0) {
				rowDiv = $('<div class="row"/>')
			}
			var colDiv = $('<div class="col-md-2"/>')
			var fileName = $('<p>' + val.fileName + '</p>')
			var fileSize = $('<p>' + val.fileSize + '</p>')
			var createDate = $('<p>' + formatDate(val.createTime) + '</p>')
			var image = $('<img style="width: 150px;height: 150px;" class="img-thumbnail" src="'
					+ val.imageId + '"  alt="图片不存在" />')
			var operation = $('<h3><p data="'
					+ val.id
					+ '" class="glyphicon glyphicon-remove-circle btn-link"></p>&nbsp;&nbsp;<a class="glyphicon glyphicon-cloud-download" href="/ios/free/download/'
					+ val.id + '"></a></h3>')
			var removeBtn = operation.find("p")
			colDiv.append(image, fileName, createDate, fileSize, operation)
			rowDiv.append(colDiv)
			// 添加删除文件事件
			removeBtn.click(function() {
				var id = $(this).attr('data')
				$.confirm({
					title : '删除确认',
					content : '确定删除该模型吗？',
					type : 'dark',
					closeIcon : true,
					icon : 'glyphicon glyphicon-question-sign',
					confirmButton : '确定',
					cancelButton : '取消',
					theme : 'material',
					confirm : function() {
						$.ajax({
									url : "/ios/delete-one-file/" + id,
									type : "post",
									async : true,
									success : function(data) {
										initFileInfo(pageIndex);
									},
									error : function(data) {
										if (data.status==401) {
											alert('会话失效，请登录后再删除');
										}else if (data.status==403) {
											alert('您无权限执行该操作');
										}else{
											alert('删除数据异常:' + JSON.stringify(data));
										}
									}
								});

					},
					cancel : function() {
					}

				})
			})

			// tr.append(td1, td2, td3, td4,td5)
			fileInfo.append(rowDiv)
			if (index > 0 && index % 5 == 0) {
				fileInfo.append($('<p/>'))
			}
		});

		// 生成分页
		var pageSizeInfo = $("#pageSizeInfo")
		pageSizeInfo.html('')
		function addClick(li) {
			li.click(function() {
						var a = $(this).find('a')
						initFileInfo(a.attr('data'))
					})
		}
		for (var i = 1; i <= data.pageCount; i++) {
			if (i == 1) {
				var li = $('<li><a data="1">&laquo;</a></li>')
				addClick(li)
				pageSizeInfo.append(li)
			}
			var li = $('<li><a data="' + i + '">' + i + '</a></li>')
			addClick(li)
			if (i == data.pageIndex) {
				li.addClass('active')
			}
			pageSizeInfo.append(li)
		}
		var li = $('<li><a data="' + data.pageCount + '">&raquo;</a></li>')
		addClick(li)
		pageSizeInfo.append(li)
		// setIframeHeight(parent.document.getElementById('content-frame'))
	}

	// 初始化页面信息
	initFileInfo(1);

	// 初始化文件上传组件
	var fileBtn = $("input[name=file]");
	var imageFileBtn = $("input[name=file1]");
	var processBar = $("#progressBar");
	var uploadBtn = $("h2[name=upload]");
	var canelBtn = $("h2[name=cancelUpload]");
	var ot;// 上传开始时间
	var oloaded;// 已上传文件大小
	fileBtn.change(function() {
				var fileObj = fileBtn.get(0).files[0]; // js获取文件对象
				if (fileObj) {
					var fileSize = getSize(fileObj.size);
					$("label[name=upfileName]").text('文件名：' + fileObj.name);
					$("label[name=upfileSize]").text('文件大小：' + fileSize);
					$("label[name=upfileType]").text('文件类型：' + fileObj.type);
					uploadBtn.attr('disabled', false);
					setProgress(0);
				}
			});
	// 上传文件按钮点击的时候
	uploadBtn.click(function() {
				// 进度条归零
				setProgress(0);
				// 进度条显示
				showProgress();
				// 上传文件
				uploadFile();
			});
	function uploadFile() {
		var url = "/ios/upload";
		var fileObj = fileBtn.get(0).files[0];
		var imageFileObj = imageFileBtn.get(0).files[0];
		if (fileObj == null) {
			alert("请添加模型切图文件");
			return;
		}
		if (imageFileObj == null) {
			alert("请添加缩略图");
			return;
		}
		var modelSize = fileObj.size
		var imageSize = imageFileObj.size
		var fileName = fileObj.name
		var suffixs = ["zip", "rar"];
		var index = fileName.lastIndexOf(".");
		var ext = fileName.substr(index + 1);
		if (suffixs.indexOf(ext) == -1) {
			alert("模型切图只支持zip,rar格式");
			return;
		}
		if (modelSize > 100 * 1024 * 1024) {
			alert("模型切图文件不能大于100M");
			return;
		}
		if (imageSize > 1024 * 1024) {
			alert("缩略图不能大于1M");
			return;
		}

		// 上传按钮禁用
		uploadBtn.attr('disabled', true);
		// FormData 对象
		var form = new FormData();
		form.append('file', fileObj); // 文件对象
		form.append('fileImage', imageFileObj); // 文件对象
		// XMLHttpRequest 对象
		var xhr = new XMLHttpRequest();
		// true为异步处理
		xhr.open('post', url, true);
		// 上传开始执行方法
		xhr.onloadstart = function() {
			console.log('开始上传')
			ot = new Date().getTime(); // 设置上传开始时间
			oloaded = 0;// 已上传的文件大小为0
		};

		xhr.upload.addEventListener('progress', progressFunction, false);
		xhr.addEventListener("load", uploadComplete, false);
		xhr.addEventListener("error", uploadFailed, false);
		xhr.addEventListener("abort", uploadCanceled, false);
		xhr.send(form);

		function progressFunction(evt) {
			if (evt.lengthComputable) {
				var completePercent = Math.round(evt.loaded / evt.total * 100)
				setProgress(completePercent)
				var time = $("#time");
				var nt = new Date().getTime();// 获取当前时间
				var pertime = (nt - ot) / 1000; // 计算出上次调用该方法时到现在的时间差，单位为s
				ot = new Date().getTime(); // 重新赋值时间，用于下次计算

				var perload = evt.loaded - oloaded; // 计算该分段上传的文件大小，单位b
				oloaded = evt.loaded;// 重新赋值已上传文件大小，用以下次计算

				// 上传速度计算
				var speed = perload / pertime;// 单位b/s
				var bspeed = speed;
				var units = 'b/s';// 单位名称
				if (speed / 1024 > 1) {
					speed = speed / 1024;
					units = 'k/s';
				}
				if (speed / 1024 > 1) {
					speed = speed / 1024;
					units = 'M/s';
				}
				speed = speed.toFixed(1);
				// 剩余时间
				var resttime = ((evt.total - evt.loaded) / bspeed).toFixed(1);
				$("#showInfo").html(speed + units + '，剩余时间：' + resttime + 's');
			}
		}

		// 上传成功后回调
		function uploadComplete(evt) {
			uploadBtn.attr('disabled', false);
			var status=evt.currentTarget.status
			if (status==401) {
				alert('请登录后再上传')
				return
			}
			if (status==403) {
				alert('无权限操作')
				return
			}
			console.log('上传成功')
			initFileInfo(1)
		};

		// 上传失败回调
		function uploadFailed(evt) {
			alert('上传失败(上传数据最大不能超过500M) ' + evt.target.responseText);
		}

		// 终止上传
		function cancelUpload() {
			xhr.abort();
		}

		// 上传取消后回调
		function uploadCanceled(evt) {
			alertg('文件上传已终止:' + evt.target.responseText);
		}

		canelBtn.click(function() {
					uploadBtn.attr('disabled', false);
					cancelUpload();
				})
	}

	function getSize(size) {
		var fileSize = '0KB';
		if (size > 1024 * 1024) {
			fileSize = (Math.round(size / (1024 * 1024))).toString() + 'MB';
		} else {
			fileSize = (Math.round(size / 1024)).toString() + 'KB';
		}
		return fileSize;
	}

	function setProgress(w) {
		processBar.width(w + '%');
		processBar.text(w + '%');
	}
	function showProgress() {
		processBar.parent().show();
	}
	function hideProgress() {
		processBar.parent().hide();
	}
});
